import java.util.Arrays;

public class Test2 {
    //leetcode 467 环绕字符串中唯一的子字符串
    public int findSubstringInWraproundString(String ss) {
        char[] s = ss.toCharArray();
        int n = s.length;
        int[] dp = new int[n];
        Arrays.fill(dp,1);
        for (int i = 1; i < n; i++) {
            if (s[i-1] + 1 == s[i] || (s[i-1] == 'z' && s[i] == 'a')) {
                dp[i] += dp[i-1];
            }
        }
        //使用哈希表来去重，因为给定的字符串可能会存在重复的字符，那么也就会出现重复的情况
        //但是 bcde 和 abcdef 这两种情况，abcdef 中出现在base中的字串的数量是包含了bcde的，
        //所以我们的 hash 中只需要记录以同一个字符为结尾的dp表的最大值就可以了，这样就达到了去重的目的
        int[] hash = new int[26];
        for (int i = 0; i < n; i++) hash[s[i] - 'a'] = Math.max(hash[s[i] - 'a'],dp[i]);
        int ret = 0;
        for (int x : hash) ret += x;
        return ret;
    }
}
